package com.hex.ds.code.detection.transfer.service;

import com.jcraft.jsch.Session;

public interface ScpTransferService {

    /**
     * @Method getSession
     * @Return com.jcraft.jsch.Session
     * @Description 获取session
     * @Author Wang zhihao
     * @Date 2023/11/21 11:19
     * @Version V1.0
     */
    Session getSession(String host, int port, String user, String password);

    /**
     * @Method removeFile
     * @Return void
     * @Description 删除文件
     * @Author Wang zhihao
     * @Date 2023/11/21 11:19
     * @Version V1.0
     */
    void removeFile(Session session,String filePath);

    /**
     * @Method createDir
     * @Param
     * @Return void
     * @Description 多层级创建目录
     * @Author Wang zhihao
     * @Date 2023/11/21 20:23
     * @Version V1.0
     */
    void createDir(Session session, String dir);

    /**
     * @Method uploadFile
     * @Return void
     * @Description 上传文件
     * @Author Wang zhihao
     * @Date 2023/11/21 13:21
     * @Version V1.0
     */
    void uploadFile(Session session, String localFilePath, String remoteFilePath, String fileName);

    /**
     * @Method isExistsDir
     * @Return boolean
     * @Description 校验目录是否存在
     * @Author Wang zhihao
     * @Date 2023/11/21 18:59
     * @Version V1.0
     */
    boolean isExistsDir(Session session, String fileDir);

    /**
     * @Method isExistsPath
     * @Return boolean
     * @Description 校验文件是否存在
     * @Author Wang zhihao
     * @Date 2023/11/21 18:59
     * @Version V1.0
     */
    boolean isExistsPath(Session session, String filePath);

    /**
     * @Method moveFile
     * @Return void
     * @Description 移动文件
     * @Author Wang zhihao
     * @Date 2023/11/21 19:00
     * @Version V1.0
     */
    void moveFile(Session session, String remoteFilePath, String newRemoteFileDir, String fileName);

    /**
     * @Method copyFileLocal
     * @Param
     * @param session
     * @param sourceDir
     * @param targetDir
     * @Return void
     * @Description 本地复制文件到指定路径
     * @Author Wang zhihao
     * @Date 2024/1/26 11:27
     * @Version V1.0
     */
    void copyFileLocal(Session session, String sourceDir, String targetDir);

    /**
     * @Method chmodDir
     * @Param
     * @param session
     * @param targetDir
     * @Return void
     * @Description 更改指定目录权限
     * @Author Wang zhihao
     * @Date 2024/1/26 11:27
     * @Version V1.0
     */
    void chmodDir(Session session, String targetDir, String user);
}
